package com.testing.class8;

import java.util.Arrays;

public class BubbleSort {

    public static void main(String[] args) {
        int[] input = {-3,3,-3,3,4};
        bubblesort(input);

    }


    public static void bubblesort(int[] a) {
        //数组一共15个数，总共需要比较14(length-1)轮。
        for (int lun = 1; lun <= a.length - 1; lun++) {
            //每一轮做的操作：
            //第n轮：目的是找出剩下的15-n+1个数里面最大的，所以比较的范围：下标从0到length-n
            for (int index = a.length-1; index >=lun; index--) {
                //前一个数和后一个数进行比较
                //如果前一个数比后一个数大，就交换
                if (a[index] > a[index - 1]) {
                    //交换两个数字
                    //就像倒水，需要一个空杯子
//                 exchange(a,index,index+1);
                    System.out.println("++++++++++++原本的值+++++++++++");
                    System.out.println(a[index]);
                    System.out.println(a[index - 1]);
//                    exchange(a[index], a[index + 1]);
                    exchange(a,index,index-1);
                    System.out.println("++++++++++++交换后的值+++++++++++");
                    System.out.println(a[index]);
                    System.out.println(a[index - 1]);
                }
                //否则不做操作
            }
            System.out.println(Arrays.toString(a));
        }
    }

    public static void exchange(int[] a, int first, int second) {
        System.out.println("-----------交换前-----------");
        System.out.println(a[first]);
        System.out.println(a[second]);
        int tmp = a[first];
        a[first] = a[second];
        a[second] = tmp;
        System.out.println("-----------交换后-----------");
        System.out.println(a[first]);
        System.out.println(a[second]);
    }

    public static void exchange(Integer a, Integer b) {
        System.out.println("-----------交换前-----------");
        System.out.println(a);
        System.out.println(b);
        int tmp = a;
        a = b;
        b = tmp;
        System.out.println("-----------交换后-----------");
        System.out.println(a);
        System.out.println(b);
    }

    //static不影响。 返回类型也不会产生重载。
//    public int exchange(Integer a, Integer b){
//        return 1;
//    }

    //参数个数不同
    public void exchange(Integer a){

    }

    //参数类型不同
    public void exchange(String a,Integer b){
    }

    //参数的类型顺序不同
    public void exchange(Integer a ,String b){

    }

    //参数的名字不影响。
//    public void exchange(Integer first,Integer second){
//
//    }

}
